# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName : zsj.py
# @Time     : 2024/4/7 22:28
# @Author   : Robot-Zsj
"""
description:

input
4
100 200 300 500
1 2
1 3
2 4
output
700

"""
n = int(input())

wealth = list(map(int, input().split()))
wealth.insert(0, 0)

# 为什么定义family
"""
测试用例
5
100 200 300 400 500
3 4
3 5
1 3
1 2

3是1的子节点，但是3的家庭关系先被定义出来了，因此如果将家庭的财富都汇总到父节点身上，上面逻辑会将节点3的财富值变为1200，
从而影响后面父节点为1的家庭财富计算

本题需要额外定义一个family数组，用于记录每个父节点对应家庭的财富值，这样就可以避免上面问题。
"""
family = []
family.extend(wealth)

for _ in range(n - 1):
    # 然后根据第三行最后一行的输入：fa ch，family[fa]+=wealth[ch]，即将子节点的财富汇总到父节点上
    # 这样最终family的值就是题解
    fa, ch = map(int, input().split())
    family[fa] += wealth[ch]

print(max(family))
